<!-- 登录页 -->
<template>
  <!--
  vh: viewport height 视口(可视窗口)高度
  height: 100vh 表示100%窗口高度

  `background-image:`的属性及作用:
  url() - 插入背景图片
  linear-gradient(渐变角度(单位:角度 deg),渐变色1,渐变色2,渐变色...) - 线性渐变
  -->
  <div style="height: 100vh;background-image: linear-gradient(135deg,#e8e8e8,#000000);overflow: hidden">
    <el-container style="padding: 30px">
      <el-header>
        <el-row :gutter="10">
          <el-col :span="3">
            <!--标志图片1-->
            <img src="/imgs/login/logo.png" style="height: 50px;">
          </el-col>
          <el-col :span="1">
            <!--标志图片2-->
            <img src="/imgs/login/auto.png" style="height: 50px;">
          </el-col>
          <el-col :span="1">
            <!--竖线图片-->
            <img src="/imgs/login/verticalLine.png" style="height: 50px;">
          </el-col>
          <el-col :span="19">
            <span style="color:#fff;font-weight: bold;font-size: 30px">智慧车辆运营管理系统</span>
          </el-col>
        </el-row>
      </el-header>
      <el-main>
        <el-row :gutter="10">
          <el-col :span="16">
            <img src="/imgs/login/bg.png" style="width: 100%;margin-top: 60px;">
          </el-col>
          <el-col :span="8">
            <el-card style="margin-top: 80px;background-color: #eeeeee;">
              <h3 style="text-align: center;">用户登录</h3>
              <!-- label-position="top" 文本与文本框的关系 默认左右关系 top表示上下关系 -->
              <el-form label-position="top">
                <el-form-item label="用户名">
                  <el-input placeholder="请输入用户名" v-model="user.username"></el-input>
                </el-form-item>
                <el-form-item label="密码">
                  <el-input placeholder="请输入密码" type="password" v-model="user.password"></el-input>
                </el-form-item>
                <el-form-item>
                  <el-button type="primary" style="width: 100%;" @click="login()">登录</el-button>
                </el-form-item>
              </el-form>
              <div style="color:#666;text-align: center;font-size: 14px;padding: 10px 0;">
                (体验账号: Tom 密码: 123456)
              </div>
            </el-card>
          </el-col>
        </el-row>
      </el-main>
    </el-container>
  </div>
</template>

<script setup>
import {ref} from "vue";
import axios from "axios";
import {ElMessage} from "element-plus";
import router from "@/router";

const user = ref({username: '', password: ''});
const login = () => {

  /**
   * 向后端发送请求 利用axios的.post('url',待传输的信息)方法发送post请求
   * 参数1为后端接口地址路径 用''包裹
   * 参数2为前端获取到的信息对象 通过.value可以获取其中数据
   */
  axios.post(BASE_URL+'/v1/user/login', user.value)
      .then((response) => {
        /*
          .then(): 回调函数 后端服务器响应后执行的内容
          与上述post方法异步进行 即post和then方法的执行是独立执行的 不会受到对方的影响
          参数response中装载着相应信息内容 通过.data能够获取其中数据
         */
        console.log(response.data);
        if (response.data.code === 2000) {
          ElMessage.success('登陆成功');
          // 跳转至首页: "/" 根目录 而router/index.js配置了重定向 因此会跳转到/user用户列表页
          // 登陆成功后 将后端返回的当前用户信息存入localStorage中
          // localStorage按照键值对形式存储数据 键和值都是字符串类型 因此需要将值通过JSON.stringify()方法将获取到的对象类型转为字符串
          console.log(response.data);
          console.log(response.data.data);
          console.log(JSON.stringify(response.data.data));// 将JS对象转为JSON字符串
          // 登录成功后 将后端返回的当前用户信息存入localStorage中
          localStorage.setItem('user', JSON.stringify(response.data.data));
          router.push('/');
        } else {
          ElMessage.error(response.data.msg);
          user.value = {username: '', password: ''};
        }
      })
}
</script>

<style scoped>

</style>